﻿namespace ProblemsSet
{
    public class Problem_113 : BaseProblem
    {
        public override object GetResult()
        {
            const int power = 100;

            string res = "0";
            for (var i = 1; i <= power; i++)
            {
                var st = MathLogic.SummString(MathLogic.GetC(i, 8 + i).ToString(), MathLogic.GetC(i, 9 + i).ToString());
                st = MathLogic.SubstractString(st, "10");
                res =  MathLogic.SummString(res,st);
            }
            return res;
        }

        public override string Problem
        {
            get
            {
                return @"Working from left-to-right if no digit is exceeded by the digit to its left it is called an increasing number; for example, 134468.

Similarly if no digit is exceeded by the digit to its right it is called a decreasing number; for example, 66420.

We shall call a positive integer that is neither increasing nor decreasing a 'bouncy' number; for example, 155349.

As n increases, the proportion of bouncy numbers below n increases such that there are only 12951 numbers below one-million that are not bouncy and only 277032 non-bouncy numbers below 1010.

How many numbers below a googol (10100) are not bouncy?";
            }
        }

        public override bool IsSolved
        {
            get
            {
                return true;
            }
        }

        public override object Answer
        {
            get
            {
                return "51161058134250";
            }
        }

    }
}
